<?php
abstract class Propiedad
{
	var $id="";#id_valor
	var $id_nombre="";#nombre del campo llave
	var $propiedad="";#nombre del campo propiedad
	var $tabla_nombre="";#nombre de la tabla
	var $valor="";#valor del campo

	function __construct(){
		$this->setTablaNombre( func_get_arg(0) );
		$this->setIdNombre( func_get_arg( 1 ) );
		$this->setPropiedad( func_get_arg(2) );		
	}
	function cargar()
	{
		$con=new Conexion();
		$r="select * from ".$this->getTablaNombre()." u where u.".$this->getIdNombre()."='".$this->getId()."'"; 
		$con->ejecutar($r);
		
		if($con->vacio())
			$this->set("");
		else{
			$con->traerFilaPorNombre();
			$this->set($con->get($this->getPropiedad()));	
		}
	}
	
	function insertar(){
		if(! $this->vacio())
			new Conexion("INSERT INTO ".$this->getTablaNombre()." values ('".$this->getId()."','".$this->get()."');");
	}
	function vacio(){
		return (trim($this->get())=="")?true:false;
	}
	function eliminar(){
		new Conexion("DELETE FROM ".$this->getTablaNombre()." WHERE ".$this->getIdNombre()."='".$this->getId()."'");
		$this->set("");
	}
	function toObjeto()
	{
		$o = array(
			$this->getIdNombre()=>$this->getId(),
			$this->getPropiedad()=> $this->getValor()
		);
		return $o;
	}
	function toJson(){
		return json_encode($this->toObjeto());
	}
	
	function _editar($_x){
		if($_x != $this->get())
		{
			$this->set($_x);
			new Conexion("UPDATE ".$this->getTablaNombre()." SET ".$this->getPropiedad()."='".$this->get()."' where ".$this->getIdNombre()."='".$this->getId()."'");
		}
	}
	
	function editar($x){
		//echo "($x)";
		$con=  new Conexion();
		#preguntar si ya existe
		$con->ejecutar("select * from ".$this->getTablaNombre()." u where u.".$this->getIdNombre()."='".$this->getId()."'");
		#echo "select * from ".$this->getTablaNombre()." u where u.".$this->getIdNombre()."='".$this->getId()."'";
		if(!$con->vacio())
		#ya existe el dato
		{
			if(trim($x)=="")
			{	#ya los dejo en blanco
				$this->eliminar();
				return;
			}
			else
				#editarlo
				$this->_editar($x);
				
		}				
		else
		{
			$this->set($x);			
			$this->insertar();
		}
	}
	function listarSelect()
	{
		$query= "select distinct ".$this->getPropiedad()." from ".$this->getTablaNombre();
		
		$con= new Conexion();
		$con->ejecutar($query." order by ".$this->getPropiedad()." ;");
			
		$respuesta="{identifier:'abbreviation',
			items: [";
		
		#le vamos concatenando a la respuesta cada opcion
		while($con->traerFilaPorNombre()) {
			$this->setId($con->get("id_producto"));
			$this->cargar();
			$respuesta.= "{name:'".$this->getValor()."',abbreviation:'".$user->getValor()."'},";
			#echo $this->conexion->get("login")." - ";
	    }
		
		#si hay almenos una fila, nos queda una coma al final. Hay que quitarla
		if(!$con->vacio())
			$respuesta = substr($respuesta,0,strlen($respuesta)-1);
		
		$respuesta.= "]}";
		#imprimir el resultado
		return $respuesta;
	}

	function setId($_x){$this->id=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
	function setPropiedad($_x){$this->propiedad=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
	function setTablaNombre($_x){$this->tabla_nombre=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
	function set($_x){$this->valor= (trim($_x)=="" || $_x=="null" || $_x==null) ? "" : trim($_x);}
	function setIdNombre($_x){$this->id_nombre= (trim($_x)=="" || $_x=="null" || $_x==null) ? "" : trim($_x);}

	function getId(){return $this->id;}
	function getPropiedad(){return $this->propiedad;}
	function getTablaNombre(){return $this->tabla_nombre;}
	function get(){return $this->valor;}
	function getIdNombre(){return $this->id_nombre;}
	
	static function select($table,$campo){
		$con=new Conexion();
		$con->ejecutar("select distinct $campo from $table;");
		
		$respuesta="{numFilas:'".$con->numFilasResultado()."',
			data: [";
		
		while($con->traerFilaPorNombre()) 
			$respuesta.= "{nombre:'".$con->get($campo)."',id:'".$con->get($campo)."'},";
		
		#si hay almenos una fila, nos queda una coma al final. Hay que quitarla
		if(!$con->vacio())
			$respuesta = substr($respuesta,0,strlen($respuesta)-1);
		
		$respuesta.= "]}";

		return $respuesta;
	}

}
?>
